RbacService.getRole   A
last analyzed

Complexity

Conditions 2

Size

Total Lines 12
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 11
dl 0
loc 12
c 0
b 0
f 0
rs 9.85
cc 2
1
import { Injectable } from '@nestjs/common';
2
import { IRbac } from './interfaces/rbac.interface';
3
import { StorageRbacService } from './storage.rbac.service';
4
import { RoleRbac } from '../role/role.rbac';
5
import { IRoleRbac } from '../role/interfaces/role.rbac.interface';
6
import { RbacExceptions } from '../exceptions/rbac.exceptions';
7
import { IParamsFilter } from '../params-filter/interfaces/params.filter.interface';
8
9
@Injectable()
10
export class RbacService implements IRbac {
11
12
    constructor(
13
        private readonly storageRbacService: StorageRbacService,
14
    ) {
15
    }
16
17
    async getRole(role: string, paramsFilter?: IParamsFilter): Promise<IRoleRbac> {
18
        const storage = await this.storageRbacService.getStorage();
19
        if (!storage.roles || !storage.roles.includes(role)) {
20
            throw new RbacExceptions('There is no exist a role.');
21
        }
22
23
        return new RoleRbac(
24
            role,
25
            await this.storageRbacService.getGrant(role),
26
            await this.storageRbacService.getFilters(),
27
            paramsFilter,
28
        );
29
    }
30
}
31